// Ŭnicode please
#pragma once
#include <string>

#include "MioMacro.h"

namespace mio
{
	class File;
	class Path;

	//namespace 함수/클래스 동시지원(클래스를 살린건 크로스 플랫폼으로 갈 경우 정리를 편하게 하기 위해서)
	class Path {
	public:
		std::string docPath(const char *name, const char *ext);
		std::string docPath(const char *file);
		virtual std::string docPath(const std::string &file) = 0;

		std::string appPath(const char *name, const char *ext);
		std::string appPath(const char *file);
		virtual std::string appPath(const std::string &file) = 0;

		virtual bool isFileExist(const std::string &file) = 0;

		std::string extension(const std::string &file);
		std::string extension(const char *file);
	};
	Path& getPath();	//path객체를 얻는 함수. 플랫폼별로 적절히 구현하기
	
	class File {
	public:
		static bool copy(const std::string &src, const std::string &dst);
		static bool copy(const char *src, const char *dst);
		
		static int filesize(const char *file);
		static int filesize(const std::string &src);
	};

	//기존에 만든 인터페이스. 호환떄문에 냅둠
	namespace path
	{
		std::string docPath(const char *name, const char *ext);
		std::string docPath(const char *file);
		std::string docPath(const std::string &file);

		std::string appPath(const char *name, const char *ext);
		std::string appPath(const char *file);
		std::string appPath(const std::string &file);

		bool isFileExist(const std::string &file);
	}
}
